package com.bw1806.controller;

import org.csource.fastdfs.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @描述
 * @创建人 wangyue
 * @创建时间2020/11/1810:51
 */
@RestController
@RequestMapping("file")
public class FileController {

    @RequestMapping("upload")
    public Map<String,String> uplaod(MultipartFile multipartFile){
        Map<String,String> map = new HashMap<>();
        //防止用户上传文件名称重复；用uuid代替原理的名字
        //获取文件真实名称
        String name= multipartFile.getOriginalFilename();
        //获取名称后缀
        String affix = name.substring(name.lastIndexOf("."));
        String savename=UUID.randomUUID().toString()+affix;

        //保存到本地
        savelocal(multipartFile, map, savename);
        //savefastdfs(multipartFile, map, affix.substring(1));
        return map;
    }


    private void savelocal(MultipartFile multipartFile, Map<String, String> map, String savename) {
        try {
            multipartFile.transferTo(new File("D:\\uploads\\"+savename));
        } catch (IOException e) {
            e.printStackTrace();
        }
        map.put("imgsrc","/uploads/"+savename);
    }
    //保存到fastdfs
    private void savefastdfs(MultipartFile multipartFile, Map<String, String> map, String type) {
        try {
            ClientGlobal.init("D:\\s_project\\2018-03\\dubbo-parent\\dubbo-consumer\\src\\main\\resources\\fdfs_client.conf");
            // 2、创建一个 TrackerClient 对象。直接 new 一个。
            TrackerClient trackerClient = new TrackerClient();
            // 3、使用 TrackerClient 对象创建连接，获得一个 TrackerServer 对象。
            TrackerServer trackerServer = trackerClient.getConnection();
            // 4、创建一个 StorageServer 的引用，值为 null
            StorageServer storageServer = null;
            // 5、创建一个 StorageClient 对象，需要两个参数 TrackerServer 对象、StorageServer 的引用
            StorageClient storageClient = new StorageClient(trackerServer, storageServer);
            // 6、使用 StorageClient 对象上传图片。
            //扩展名不带“.”
            String[] strings = storageClient.upload_file(multipartFile.getBytes(), type,
                    null);
            // 7、返回数组。包含组名和图片的路径。
            String imgurl="http://192.168.25.133/";
            for (String str : strings) {
                imgurl+=str+"/";
            }
            System.out.println("============="+imgurl);
            map.put("imgsrc",imgurl.substring(0,imgurl.length()-1));
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
